package com.example.asus.autocompletetextviewdemo;

import android.os.Bundle;
import android.app.Activity;
/**凡是有下拉菜单的项目，都必须用到ArrayAdapter对象*/
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.MultiAutoCompleteTextView;

public class AutoCompleteTextViewDemoActivity extends Activity {
    private static final String[] autoStr = new String[] { "Italy","IT","item","its","itself"
            ,"abc","abcd","abcde"};
    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /* 载入main.xml Layout */
        setContentView(R.layout.activity_autocompletetextviewdemo);
        /* new ArrayAdapter对象并将autoStr字符串数组传入 */
        ArrayAdapter adapter =
                new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, autoStr);


        /** 以CfindViewById()取得AutoompleteTextView对象 */
        AutoCompleteTextView myAutoCompleteTextView =
                (AutoCompleteTextView) findViewById(R.id.myAutoCompleteTextView);

        /**将ArrayAdapter添加到AutoCompleteTextView对象中，
         * 使用的方法为setAdapter，当中传输唯一的参数类型即为字符串类型ArrayAdapter。*/
        myAutoCompleteTextView.setAdapter(adapter);


        /**
         * 用MultiAutoCompleteTextView来实现
         * 继承自AutoCompleteTextView，延长AutoCompleteTextView的长度
         * 它和AutoCompleteTextView的区别就是MultiAutoCompleteTextView可以在输入框中一直增加新的选取值。
         * 编写方式也有所不同，在进行setAdapter之后还需要调用setTokenizer()(42行),否则会出现错误
         */
        MultiAutoCompleteTextView myMultiAutoCompleteTextView = (MultiAutoCompleteTextView)
                findViewById(R.id.myMultiAutoCompleteTextView);
        myMultiAutoCompleteTextView.setAdapter(adapter);
        myMultiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
    }
}

/**1.
 * AutoCompleteTextView提供了自动提示功能默认的thresh为2，
 * 亦即默认情况下必须输入两个或者两个以上的字符，才会有自动提示功能，
 * 否则 AutoCompleteTextView是不会有任何提示的
 * 当然可以通过设置setThresh至少输入几个字符后才会有提示，
 * 也可以在xml里设置。AutoCompleteTextView会把所有的字符串当做子串去做匹配。*/

/**2.
 * MultiAutoCompleteTextView会根据提供tokenizer来分解用户已经输入的字符串，
 * 并对符合条件的最后几个字符当做子串去做自动提示。
 * 换言之，就是多个关键字的验证
 * */


